const parseMarkdown = (text) => {
    // 安全过滤
    const safeText = text
        .replace(/&/g, "&amp;")
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&#039;");

    // 扩展Markdown转换（新增功能按处理顺序排列）
    return safeText
        // 新增：字体高亮（使用==包围）
        .replace(/==(.*?)==/g, '<mark>$1</mark>')
        // 标题（保持原有顺序）
        .replace(/^### (.*$)/gm, '<h3>$1</h3>')
        .replace(/^## (.*$)/gm, '<h2>$1</h2>')
        .replace(/^# (.*$)/gm, '<h1>$1</h1>')
        // 强调样式（调整处理顺序）
        .replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>')
        .replace(/\*(.*?)\*/g, '<em>$1</em>')
        // 代码处理
        .replace(/`([^`]+)`/g, '<code>$1</code>')
        .replace(/```([\s\S]*?)```/g, (_, code) =>
            `<pre><code>${code.trim()}</code></pre>`)
        // 链接处理（新增target和rel属性）
        .replace(/\[(.*?)\]\((.*?)\)/g, (_, text, url) => {
            const isExternal = !url.startsWith('#');
            return `<a href="${url}"
                      ${isExternal ? 'target="_blank" rel="noopener noreferrer"' : ''}
                      class="md-link">${text}</a>`;
        })
        // 图片处理
        .replace(/!\[(.*?)\]\((.*?)\)/g, '<img alt="$1" src="$2">')
        // 换行处理
        .replace(/\n/g, '<br>');
};

export { parseMarkdown };
